package com.itheima.api.object.demo01;

public class StudentDemo01 {

    public static void main(String[] args) {

        // 创建Student的对象
        Student student = new Student("张三" , 18) ;

        // public String toString(): 返回该对象的字符串表示形式(可以看做是对象的内存地址值)
        String result = student.toString();

        // com.itheima.api.object.demo01.Student@3f3afe78: 这个东西我们常常将其称之为地址值
        // com.itheima.api.object.demo01.Student类的全类名
        /**
         *
         * 为什么打印出来的内容是这样的? 想知道为什么，请看源码
         * public String toString() {
         *      return getClass().getName() + "@" + Integer.toHexString(hashCode());
         * }
         *
         *
         */
        System.out.println(result);

        /**
         * 直接输出一个对象名的时候，默认会调用对象的toString方法
         */
        System.out.println(student);

        /**
         * 一般情况下我们调用toString方法，默认调用的是Object类中的toString方法，它给我们返回的是对象的地址值，那么这个地址值对我们来讲没有什么作用
         * 我们一般情况都需要对Object类的toString方法进行重写；让这个toString方法做什么事情呢？给我返回这个对象的成员变量的字符串拼接形式
         *
         * 怎么去重写呢？ 借助于idea开发工具即可
         */

        /**
         * 如果我们后期直接通过输出语句，输出了对象名称，如果在控制台打印的是地址值，那么就说明当前对象所对应的类没有重写toString方法
         * 如果输出的不是地址值，那么就说明这个对象所对应的类，重写了toString方法； 而一般情况下，我们都会去重写toString方法
         */


    }

}
